package xyz.cerberu.cet.global.utils;


import xyz.cerberu.cet.user.domain.Comment;

import java.util.ArrayList;
import java.util.List;

/**
 * @author β世界
 * Created on 21:44
 * @Description
 */
public class ListUtils {

    /**
     * @author β世界 on 22:19 2020/10/14
     * 截取数组的一段位置
     * @param list: 被截取数组
     * @param index: 开始的位置
     * @param showNumber: 显示多少个
     * @return java.util.List<T>
     **/
    public static <T> List<T> subList(List<T> list,int index,int showNumber){
        // 如果开始下标大于整个数组，就截取最后的showNumber数量
        if(index > list.size()){
            return list.subList(list.size()-showNumber,list.size());
        }
        // 如果结尾下标大于整个数组，那么就将这个结尾下标定位到数组的最后一个
        int endIndex = index+showNumber;
        if(endIndex >= list.size()){
            endIndex = list.size();
        }
        return list.subList(index,endIndex);
    }

    /**
     * @author β世界 on 16:23 2020/10/14
     * 根据当前的数组，我们从后往前遍历
     * 如果遍历到的comment的superior不为空，那么我们就使用二分法进行查找，并且将这个加入到superior的回复评论数组中去
     * @param comments : 所有评论
     **/
    public static void clearReplyComment(List<Comment> comments){
        // 遍历数组
        List<Comment> removeComment = new ArrayList<>();
        for(int index = (comments.size()-1) ; index >= 0 ;index--){
            Comment tempComment = comments.get(index);
            // 判断当前这个comment的superior是否为空，如果是空就下一个
            if(tempComment.getSuperior() != null){
                // 不为空时就查找这个评论的上级评论
                for (Comment comment : comments) {
                    if(comment.getCid() == tempComment.getSuperior()){
                        comment.getReplyComments().add(tempComment);
                        // 将需要删除的先丢入备删的队列中
                        removeComment.add(tempComment);
                        break;
                    }
                }
                // 遍历了一遍没有找到就直接添加到移出列表
                removeComment.add(tempComment);
            }
        }

        // 遍历完成后，我们去删除那些需要被删除的comment
        for(Comment comment : removeComment){
            comments.remove(comment);
        }

    }

}
